home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
151-175
/
scopedisk161
/
curses
/
curses.h
< prev
next >
Wrap
C/C++ Source or Header
|
1995-03-19
|
7KB
|
198 lines
/*
*
* Author : Simon J Raybould. (sie@fulcrum.bt.co.uk).
*
* Date : 8th April 1990.
*
* Desc : Header file for my AMIGA CURSES package.
* This should be included instead of stdio.h, this will
* stdio.h for you.
* This file is Public Domain but please leave the name
* of the author intact.
*
*/
#ifndef stdin /* May be a better way to do this !! */
#include <stdio.h>
#endif /* stdin */
#define LINES (24)
#define COLS (80)
#ifndef TRUE
#define TRUE (1)
#define FALSE (0)
#endif /* TRUE */
#define ERR (-1)
#define OK (0)
/*
* Macros
*/
#define addch(c) waddch(stdscr, (c))
#define addstr(str) waddstr(stdscr, (str))
#define attrset(attr) wattrset(stdscr, (attr))
#define attron(attr) wattron(stdscr, (attr))
#define attroff(attr) wattroff(stdscr, (attr))
#define clear() wclear(stdscr)
#define clrtoeol() wclrtoeol(stdscr)
#define clrtobot() wclrtobot(stdscr)
#define delch() wdelch(stdscr)
#define deleteln() wdeleteln(stdscr)
#define erase() werase(stdscr)
#define inch() winch(stdscr)
#define insch(c) winsch(stdscr, (c))
#define insertln() winsertln(stdscr)
#define getch() wgetch(stdscr)
#define getstr(ptr) wgetstr(stdscr, (ptr))
#define getyx(window, y, x) ((y) = window->_cury+window->_begy, \
(x) = window->_curx + window->_begx)
#define move(line, col) wmove(stdscr, (line), (col))
#define mvdelch(y, x) (move((y), (x)), delch())
#define mvwdelch(win, y, x) (wmove((win),(y),(x)),wdelch((win)))
#define mvgetch(y, x) (move((y), (x)), getch())
#define mvwgetch(win, y, x) (wmove((win),(y),(x)),wgetch((win)))
#define mvgetstr(y, x, ptr) (move((y), (x)), getstr((ptr)))
#define mvwgetstr(win, y, x, ptr) (wmove((win), (y), (x)), \
wgetstr((win), (ptr)))
#define mvinsch(y, x, c) (move((y), (x)), insch((c)))
#define mvwinsch(win, y, x, c) (wmove((win), (y), (x)), \
winsch((win), (c)))
#define mvinch(y, x) (move((y), (x)), inch())
#define mvwinch(win, y, x) (wmove((win), (y), (x)),winch((win)))
#define mvaddch(y, x, c) (move((y), (x)), addch((c)))
#define mvwaddch(win, y, x, c) (wmove((win), (y), (x)), \
waddch((win), (c)))
#define mvaddstr(y, x, str) (move((y), (x)), addstr((str)))
#define mvwaddstr(win, y, x, str) (wmove((win), (y), (x)), \
waddstr((win), (str)))
#define refresh() wrefresh(stdscr)
#define setscrreg(top, bottom) wsetscrreg(stdscr, (top), (bottom))
#define standend() wstandend(stdscr)
#define standout() wstandout(stdscr)
/*
* NON STANDARD MACROS
*/
#define pencolour(n) wpencolour(stdscr, (n))
/*
* Colours
*/
#define COLOR_BLACK 0 /* Black */
#define COLOR_WHITE 1 /* White */
#define COLOR_YELLOW 2 /* Background Blue */
#define COLOR_ORANGE 3 /* Orange */
#define COLOR_BLUE 4 /* Blue */
#define COLOR_MAGENTA 5 /* Magenta */
#define COLOR_CYAN 6 /* Cyan */
#define COLOR_PWHITE 7 /* Paper White */
#define COLOR_BROWN 8 /* Brown */
#define COLOR_RED 9 /* Red */
#define COLOR_LGREEN 10 /* Light Green */
#define COLOR_TAN 11 /* Well err Tan really */
#define COLOR_BBLUE 12 /* Different to BLUE */
#define COLOR_PURPLE 13 /* Pomegranate colour */
#define COLOR_GREEN 14 /* The Bla Bla Bla of home e.t.c. */
#define COLOR_GREY 15 /* Dead giveaway that one */
/*
* Video Attributes.
*/
#define A_NORMAL 0000000
#define A_STANDOUT 0000200
#define _STANDOUT A_STANDOUT /* for compatibility with old curses */
#define A_UNDERLINE 0000400
#define A_REVERSE 0001000
#define A_BLINK 0002000
#define A_DIM 0004000
#define A_BOLD 0010000
#define A_ATTRIBUTES 0377600
#define A_CHARTEXT 0000177
# define bool char
# define reg register
/*
* chtype is the type used to store a character together with attributes.
* It can be set to "char" to save space, or "long" to get more attributes.
*/
typedef unsigned short chtype;
struct _win_st {
short _cury, _curx;
short _maxy, _maxx;
short _begy, _begx;
short _flags;
chtype _attrs;
bool _clear; /* T=clear on every refresh set by clearok() */
bool _cls; /* T=clear on next refresh set by clear() */
bool _leave;
bool _scroll;
bool _use_idl;
bool _use_keypad; /* 0=no, 1=yes, 2=yes/timeout */
bool _use_meta; /* T=use the meta key */
bool _nodelay; /* T=don't wait for tty input */
chtype **_y;
short *_firstch;
short *_lastch;
short _tmarg,_bmarg;
};
typedef struct _win_st WINDOW;
extern WINDOW *stdscr, *curscr;
/* Funny "characters" enabled for various special function keys for input */
#define KEY_BREAK 0401 /* break key (unreliable) */
#define KEY_DOWN 0402 /* The four arrow keys ... */
#define KEY_UP 0403
#define KEY_LEFT 0404
#define KEY_RIGHT 0405 /* ... */
#define KEY_HOME 0406 /* Home key (upward+left arrow) */
#define KEY_BACKSPACE 0407 /* backspace (unreliable) */
#define KEY_F0 0410 /* Function keys. Space for 64 */
#define KEY_F(n) (KEY_F0+(n)) /* keys is reserved. */
#define KEY_DL 0510 /* Delete line */
#define KEY_IL 0511 /* Insert line */
#define KEY_DC 0512 /* Delete character */
#define KEY_IC 0513 /* Insert char or enter insert mode */
#define KEY_EIC 0514 /* Exit insert char mode */
#define KEY_CLEAR 0515 /* Clear screen */
#define KEY_EOS 0516 /* Clear to end of screen */
#define KEY_EOL 0517 /* Clear to end of line */
#define KEY_SF 0520 /* Scroll 1 line forward */
#define KEY_SR 0521 /* Scroll 1 line backwards (reverse) */
#define KEY_NPAGE 0522 /* Next page */
#define KEY_PPAGE 0523 /* Previous page */
#define KEY_STAB 0524 /* Set tab */
#define KEY_CTAB 0525 /* Clear tab */
#define KEY_CATAB 0526 /* Clear all tabs */
#define KEY_ENTER 0527 /* Enter or send (unreliable) */
#define KEY_SRESET 0530 /* soft (partial) reset (unreliable) */
#define KEY_RESET 0531 /* reset or hard reset (unreliable) */
#define KEY_PRINT 0532 /* print or copy */
#define KEY_LL 0533 /* home down or bottom (lower left) */
/* The keypad is arranged like this: */
/* a1 up a3 */
/* left b2 right */
/* c1 down c3 */
#define KEY_A1 0534 /* upper left of keypad */
#define KEY_A3 0535 /* upper right of keypad */
#define KEY_B2 0536 /* center of keypad */
#define KEY_C1 0537 /* lower left of keypad */
#define KEY_C3 0540 /* lower right of keypad */
#define KEY_HELP 0553 /* Help Key */
WINDOW *newwin(), *subwin(), *newpad();